/**
 * @file wa_cursor.h
 *
 */
#ifndef _WA_CURSOR_H
#define _WA_CURSOR_H

#ifdef __cplusplus
extern "C" {
#endif

/*********************
*      INCLUDES
*********************/
#include "wa_conf.h"
#if USE_WA_CURSOR != 0
#include <string.h>
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include "wa_area.h"
#include "wa_obj.h"
#include "wa_mask_draw.h"
#include "wa_wm.h"
#include "wa_font.h"
#include "wa_image.h"	
/*********************
*      DEFINES
*********************/


/**********************
*      TYPEDEFS
**********************/

typedef enum
{
	WA_CURSOR_TYPE_TRIA,
	WA_CURSOR_TYPE_INV_RECT,
	WA_CURSOR_TYPE_INV_ROUNDRECT,
}wa_cursor_type;

typedef enum
{
	WA_CURSOR_TRIA_UP,
	WA_CURSOR_TRIA_DOWN,
	WA_CURSOR_TRIA_LEFT,
	WA_CURSOR_TRIA_RIGHT,
}wa_cursor_tria_direction;

typedef enum
{
	WA_CURSOR_TRIA_DRAW,
	WA_CURSOR_TRIA_FILL,
}wa_cursor_tria_type;

typedef struct
{
	wa_cursor_type type;
	wa_gui_color fore_color;
	wa_gui_color back_color;
	
	uint32_t round_r;
	wa_cursor_tria_direction tria_dir;
	wa_cursor_tria_type tria_type;
}wa_cursor_ext;

/**********************
* GLOBAL PROTOTYPES
**********************/
void wa_cursor_module_init(void);
wa_obj* wa_cursor_create(wa_obj* par);
void wa_cursor_set_type(wa_obj* cursor, wa_cursor_type type);
void wa_cursor_set_fore_color(wa_obj* cursor, wa_gui_color fore_color);
void wa_cursor_set_back_color(wa_obj* cursor, wa_gui_color back_color);
void wa_cursor_set_round_r(wa_obj* cursor, uint32_t round_r);
void wa_cursor_set_tria_dir(wa_obj* cursor, wa_cursor_tria_direction tria_dir);
void wa_cursor_set_tria_type(wa_obj* cursor, wa_cursor_tria_type tria_type);
wa_cursor_type wa_cursor_get_type(wa_obj* cursor);
wa_gui_color wa_cursor_get_fore_color(wa_obj* cursor);
wa_gui_color wa_cursor_get_back_color(wa_obj* cursor);
uint32_t wa_cursor_get_round_r(wa_obj* cursor);
wa_cursor_tria_direction wa_cursor_get_tria_dir(wa_obj* cursor);
wa_cursor_tria_type wa_cursor_get_tria_type(wa_obj* cursor);

/**********************
*      MACROS
**********************/

#endif

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif


